/* eslint-disable prettier/prettier */

import RNFS from 'react-native-fs';
import {WXstate} from '../../enums/constant';
 
const getUniqueFileUris = async (): Promise<{ [key: string]: string }> => {
  try {
    const basePath = `${RNFS.DocumentDirectoryPath}/` + `${WXstate.PATH_NAME}`;
    console.log(basePath + '========++++++++=');
    const fileUris: { [key: string]: string } = {}; // 哈希表，用于存储文件名和 URI 的映射

    // 递归读取文件夹内容
    const readDirRecursively = async (dirPath: string) => {
      try {
        const items = await RNFS.readDir(dirPath);
        await Promise.all(items.map(async item => {
          if (item.isDirectory()) {
            // 递归处理子目录
            await readDirRecursively(item.path);
          } else {
            // 获取文件名和扩展名
            const fileName = item.name.split('.').slice(0, -1).join('.'); // 去掉扩展名
            const ext = item.name.split('.').pop()?.toLowerCase() || '';

            // 只保留 GIF 或 MP3 文件的 URI
            if (!(fileName in fileUris) && (ext === 'gif' || ext === 'mp3'||ext ==='so'||ext==='so1')) {
              // 如果该文件名未在哈希表中，则添加其 URI，不包含扩展名
              const pps = item.path.split('.').slice(0, -1).join('.'); 
              const uri = `file://${pps}`;
              const parts = uri.split("/");
              const target_path = parts[parts.length - 2];// 获取最后一部分
              fileUris[target_path] = uri;
              if(ext ==='so'||ext==='so1'){
                RNFS.moveFile(
                   uri + '.so',
                    uri + '.gif'
                );

                RNFS.moveFile( uri + '.so1',
                 uri + '.mp3' );
              }
            }
          }
        }));
      } catch (error) {
        console.error(`读取目录失败: ${dirPath}`, error.message, error.stack);
        throw error; // 重新抛出错误以供调用者处理
      }
    };

    // 从 `hzx` 文件夹开始读取
    await readDirRecursively(basePath);

    console.log('文件名和 URI 的哈希表:', fileUris);
    return fileUris;
  } catch (error) {
    console.error('获取文件 URI 列表失败', error.message, error.stack);
    throw error; // 重新抛出错误以供调用者处理
  }
};

export default getUniqueFileUris;
